package top.yj95.xiets.panel;

import java.awt.FlowLayout;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

/**
 * 文章《<a href="https://xiets.blog.csdn.net/article/details/74366470" target="_balnk">JavaSwing_3.1: JPanel（面板）</a>》中的示例代码
 * @author 杨军
 * @since 2023-12-26
 */
public class JPanelDemo {

    public static void main(String[] args) {
        JFrame frame = new JFrame("用户登录");
        frame.setSize(240, 140);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        
        // 第 1 个 JPanel，使用默认的浮动布局
        JPanel panel1 = new JPanel();
        panel1.add(new JLabel("用户名"));
        panel1.add(new JTextField(10));
        
        // 第 2 个 JPanel，使用默认的浮动布局
        JPanel panel2 = new JPanel();
        panel2.add(new JLabel("密\u3000码")); // \u3000 是 全角空格，目的是为了与“用户名”宽度对齐
        panel2.add(new JPasswordField(10));
        
        // 第 3 个 JPanel，使用浮动布局，并且容器内组件居中显示
        JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        panel3.add(new JButton("登录"));
        panel3.add(new JButton("注册"));
        
        // 创建一个垂直盒子容器，把上面 3 个 JPanel 串起来作为内容面板添加到窗口
        Box vBox = Box.createVerticalBox();
        vBox.add(panel1);
        vBox.add(panel2);
        vBox.add(panel3);
        
        frame.setContentPane(vBox);
        frame.setVisible(true);
    }
    
}
